public class Test {

//4.this的引用 ——> 跳转到Date类

    public void test(){
        System.out.println("test....");
    }

//    main方法也是对象的成员方法 不过是静态的
    public static void main(String[] args) {
        Test test=new Test();
        //在静态的main方法中  如何调用Test类中的test方法
        test.test();
        //通过类名实例化一个对象 通过这个对象的引用 调用 类中的方法

//      test;  //err 不能直接调用

//        类当中如果有成员方法，成员方法中有一些变量，只要调用类的属
//        性，就是test()这个对象的属性，一定要通过对象的引用去访问
    }

//3.2 类和对象的说明
//1.类只是一个模型一样的东西，用来对一个实体进行描述，限定了类有哪些成员.
//2.类是一种自定义的类型，可以用来定义变量.
//3.一个类可以实例化出多个对象，实例化出的对象占用实际的物理空间，为存储类成员变量
//4.做个比方。类实例化出对象就像现实中使用建筑设计图建造出房子，类就像是设计图，只设计出需要什么东
//  西，但是并没有实体的建筑存在，同样类也只是一个设计，实例化出的对象才能实际存储数据，占用物理空间


//    3.1什么是实例化
//    定义了一个类，就相当于在计算机中定义了一种新的类型，与int，double类似，
//    只不过int和double是java语言自带的内置类型，而类是用户自定义了一个新的
//    类型，比如上述的:PetDog类和Student类。它们都是类(一种新定义的类型)有
//    了这些自定义的类型之后，就可以使用这些类来定义实例(或者称为对象)。

//    用类类型创建对象的过程，称为类的实例化，在java中采用new关键字，配合类名来实例化对象。
//    由类 生成 对象 的过程 叫做实例化
    public static void main2(String[] args) {
        Dog dog=new Dog();
        //通过对象的引用 可以访问对象中的属性 虽然没有初始化 但是成员变量都会有一个默认值

        System.out.println(dog.name);
        System.out.println(dog.age);
        //这里name age 属于成员变量 成员变量在方法中 可以不初始化 会有一个默认值
        //name属于引用类型 默认值null age为基本数据类型 默认值为0

        int a=0;
        //局部变量 不初始化 会在访问这个变量时报错
        System.out.println(a);
    }

    public static void main1(String[] args) {
        int a=10;
        Dog dog1=new Dog();//对象的实例化
        //dog1 存储在栈中 new一个Dog 就会在对象中再开辟一块内存 dog1存储的 是指向对象的内存
        //可以通过new实例化多个对象

//        new 关键字用于创建一个对象的实例.
//        使用 . 来访问对象中的属性和方法.
//        同一个类可以创建对个实例.

        dog1.name="阿黄";
        //dog.name通过对象的引用 访问对象中的属性（成员变量 成员方法）
        dog1.color="黑色";
        dog1.age=10;
        dog1.barks();
        dog1.wag();
        dog1.eat();
        System.out.println(dog1.age);
    }



//注意事项:
//1.一般一个文件当中只定义一个类
//2. main方法所在的类一般要使用public修饰(注意:Eclipse默认会在public修饰的类中找main方法)
//3.public修饰的类必须要和文件名相同
//4.不要轻易去修改public修饰的类的名称，如果要修改，通过开发工具修改(给同学演示)。
}
